//
//  juanjoseen.swift
//  
//
//  Created by Juan Jose Elias Navarro on 16/04/23.
//

import Foundation

extension String {
    static let dicLeet: [String: [String]] = [
        "A": ["4", "/\\", "@", "/-\\", "^", "Д", "(L"],
        "B": ["I3", "8", "13", "|3", "ß", "!3", "(3", "/3", ")3", "|-]", "j3", "6"],
        "C": ["[", "¢", "{", "<", "(", "©"],
        "D": [")", "|)", "(|", "[)", "I>", "|>", "?", "T)", "I7", "cl", "|}", ">", "|]"],
        "E": ["3", "&", "£", "€", "ë", "[-", "|=-"],
        "F": ["|=", "ƒ", "|#", "ph", "/=", "v"],
        "G": ["&", "6", "(_+", "9", "C-", "gee", "(?,", "[,", "{,", "<-", "(."],
        "H": ["#", "/-/", "[-]", "]-[", ")-(", "(-)", ":-:", "|~|", "|-|", "]~[", "}{", "!-!", "1-1", "\\-/", "I+I", "/-\\"],
        "I": ["1", "[]", "|", "!", "eye", "3y3", "]["],
        "J": [",_|", "_|", "._|", "._]", "_]", ",_]", "]", ";", "1"],
        "K": [">|", "|<", "/<", "1<", "|c", "|(", "|{"],
        "L": ["1", "£", "7", "|_", "|"],
        "M": ["/\\/\\", "/V\\", "JVI", "[V]", "[]V[]", "|\\/|", "^^", "<\\/>", "{V}", "(v)", "(V)", "|V|", "nn", "IVI", "|\\|\\", "]\\/[", "1^1", "ITI", "JTI"],
        "N": ["^/", "|\\|", "/\\/", "[\\]", "<\\>", "{\\}", "|V", "/V", "И", "^", "ท"],
        "O": ["0", "Q", "()", "oh", "[]", "p", "<>", "Ø"],
        "P": ["|*", "|o", "|º", "?", "|^", "|>", "|\"", "9", "[]D", "|°", "|7"],
        "Q": ["(_,)", "9", "()_", "2", "0_", "<|", "&"],
        "R": ["I2", "|`", "|~", "|?", "/2", "|^", "lz", "|9", "2", "12", "®", "[z", "Я", ".-", "|2", "|-"],
        "S": ["5", "$", "z", "§", "ehs", "es", "2"],
        "T": ["7", "+", "-|-", "']['", "†", "\"|\"", "~|~"],
        "U": ["(_)", "|_|", "v", "L|", "µ", "บ"],
        "V": ["\\/", "|/", "\\|"],
        "W": ["\\/\\/", "VV", "\\N", "'//", "\\\\'", "\\^/", "(n)", "\\V/", "\\X/", "\\|/", "\\_|_/", "\\_:_/", "Ш", "Щ", "uu", "2u", "\\\\//\\\\//", "พ", "v²"],
        "X": ["><", "Ж", "}{", "ecks", "×", "?", ")(", "]["],
        "Y": ["j", "`/", "Ч", "7", "\\|/", "¥", "\\//"],
        "Z": ["2", "7_", "-/_", "%", ">_", "s", "~/_", "-\\_", "-|_"]
    ]
    
    func toLeet() -> String {
        var result: String = ""
        for char in Array(self.uppercased()) {
            let key: String = String(char)
            if let options: [String] = Self.dicLeet[key] {
                let index: Int = Int.random(in: 0..<options.count)
                let value: String = options[index]
                result = result + value
            } else {
                result = result + key
            }
        }
        return result
    }
}

print("Hola mundo".toLeet())
print("Esta es una prueba en leet".toLeet())
